A resistive change memory is a nonvolatile memory including two electrodes and a resistive change layer disposed between the two electrodes. The resistance between the electrodes can be switched between a low-resistance state and a high-resistance state by applying a predetermined voltage between the electrodes. This allows the resistive change memory to be programmed. The resistive state of the programmed resistive change memory is maintained even if the power is turned off.
The magnitude of voltage to be applied between the electrodes and the period of time during which the voltage is applied should be controlled appropriately in programming a resistive change memory. Controlling the magnitude of current flowing through the resistive change memory while a program voltage is being applied is also important. Semiconductor integrated circuits including a circuit for controlling the current flowing through a resistive change memory during the programming, as described above, are well known.
If a plurality of resistive change memories of a semiconductor integrated circuit each having a different resistance are programmed to a high-resistance state under identical program conditions, the resistive states of the respective resistive change memories after being programmed may often differ. For example, if a resistive change memory with a relatively high resistance and a resistive change memory with a relatively low resistance are programmed to a high-resistance state under the same program conditions, sometimes the latter resistive change memory becomes to have a greater resistance than the former after the programming.
Therefore, in order to control the resistance of a resistive change memory after being programmed, appropriate program conditions should be selected in accordance with the resistance of the resistive change memory before being programmed. However, such program conditions are unknown at the present stage.